package CutLoad.cookies
{
	/**
	 * 迟一会儿再运行，从新建这个对象开始计时后，到时后运行一个函数.
	 * @author smallerbird mail:smallerbird@gmail.com  site:www.mkigm.com QQ群:49983196
	 * 
	 */
	
	import CutLoad.Base;
	
	import flash.display.Sprite;
	import flash.events.Event;
	
	public class LaterRun extends Base
	{
		private var frame_i:Number=0;
		private var frameCount:Number=0;
		private var isLoop:Boolean;
		private var funEnd:Function=null;
		//是否开始
		private var isStart:Boolean;
		//循环的次数
		private var numLoop:Number=0;
		/**
		 * 初始化 
		 * @param frameCount 结束时间,注：单位为:帧数
		 * @param funEnd 执行的方法 格式:function()或者function(me:LaterRun)
		 * 
		 */		
		public function LaterRun(frameCount:Number,funEnd:Function,isLoop:Boolean=false,isStart:Boolean=true)
		{
			this.isStart=isStart;
			this.frameCount=frameCount;
			this.funEnd=funEnd;
			this.isLoop=isLoop;
			this.addEventListener(Event.ENTER_FRAME,enterFrame);
		}
		/**
		 * 立刻停止
		 * 
		 */		
		public function stop(isRunFunEnd:Boolean=false):void{
			this.removeEventListener(Event.ENTER_FRAME,enterFrame);
			if(isRunFunEnd) {
				try{
					funEnd(this);
				}catch(e:ArgumentError){
					funEnd();
				}
				
			}
			if(this.parent!=null) this.parent.removeChild(this);
		}
		/**
		 * 暂停 
		 * 
		 */		
		public function Pause():void{
			isStart=false;
		}
		/**
		 * 重新开始运行，恢复暂停的 
		 * 
		 */		
		public function resume():void{
			isStart=true;
		}
		/**
		 * 获得当前循环的次数 
		 * @return 
		 * 
		 */		
		public function get currentLoopCount():Number{
			return this.numLoop;
		}
		private function enterFrame(e:Event):void{
			if(!isStart) return;
			frame_i++;
			if(frame_i>frameCount){
				numLoop++;
				try{
					funEnd(this);
				}catch(e:ArgumentError){
					funEnd();
				}
				if(isLoop){
					frame_i=0;
				}else{
					stop();
					return;
				}
				
			}
		}
	}
}